<?php
include_once('inc/functions.inc.php');

if (!isEmpty(getParam('operation'))) {

    switch (getParam('operation')) {
        case 'e': {
                fntCxpReportesEmpresas($db);
                break;
            }
        case 'r': {
                fntCxpReportesReportes($db);
                break;
            }
        case 'b': {
                fntCxpReportesBusqueda($db);
                break;
            }
        case 'f': {
                fntCxpReportesFacturas($db);
                break;
            }
        case 'p': {
                fntCxpReportesPartida($db);
                break;
            }
        case 'rp': {
                fntCxpReportesProveedorGet($db);
                break;
            }
    }
    die();
}

function fntCxpReportesEmpresas($db) {
    fntEmpresasDraw($db, "sltCxpReportesEmpresas");
    ?>
    <script type="text/javascript">
        $("select[name='sltCxpReportesEmpresas']").change( function() {
            fntCxpReportesReportes();
        });
    </script>
    <?php
}

function fntCxpReportesReportes($db) {
    ?>
    <div style="width: 900px; float: left;">
        <div style="width: 900px; float: left;">&nbsp;</div>
        <div style="width: 900px; float: left;">
            Reportes:
            <select name="sltCxpReportesReportes" id="sltCxpReportesReportes">
                <option value="s">Saldo de proveedores</option>
            </select>
        </div>
        <div style="width: 900px; float: left;">&nbsp;</div>
    </div>
    <script type="text/javascript">
        $("#sltCxpReportesReportes").change( function () {
            fntCxpReportesBusqueda();
        });
    </script>
    <?php
}

function fntCxpReportesBusqueda($db) {

    $intEmpresa = getParam("sltCxpReportesEmpresas");
    $strReporte = getParam("sltCxpReportesReportes");

    if ($strReporte == "s") {
        ?>
        <div style="width: 900px; float: left;">
            <div class="ui-widget-content ui-corner-all"  style="width: 900px; float: left; padding: 2px;">&nbsp;
                <table width="100%">
                    <tr>
                        <td colspan="2"><input type="checkbox" name="chkCxpReportesProveedorAll" value="1">&nbsp;Todos los proveedores
                            <script type="text/javascript">
                                $("input[name='chkCxpReportesProveedorAll']").click( function() {
                                    if( $(this).attr("checked")) {
                                        $("input[name='hdnCxpReportesProveedor']").val("");
                                        $("#divCxpReportesProveedor").html("");
                                        $("input[name='txtCxpReportesProveedor']").hide();
                                        $("#divCxpReportesProveedor").hide();
                                        $("#divCxpReportesProveedorCambio").hide();
                                    }
                                    else {
                                        $("input[name='hdnCxpReportesProveedor']").val("");
                                        $("#divCxpReportesProveedor").html("");
                                        $("input[name='txtCxpReportesProveedor']").val("").show();
                                        $("#divCxpReportesProveedor").show();
                                        $("#divCxpReportesProveedorCambio").show();
                                    }
                                }); 
                            </script></td>                       
                    </tr>
                    <tr>
                        <td><label for="radCxpReportesFacturasEstado">Facturas&nbsp;</label></td>
                        <td><input type="radio" name="radCxpReportesFacturasEstado" value="T" checked="checked"> Todas 
                            <input type="radio" name="radCxpReportesFacturasEstado" value="P"> Pagadas 
                            <input type="radio" name="radCxpReportesFacturasEstado" value="NP"> No Pagadas </td>
                    </tr>
                    <tr>
                        <td>Proveedor</td>
                        <td><div id="divCxpReportesProveedorCambio" style="cursor: pointer; float: left;" class="ui-icon ui-icon-transferthick-e-w">
                            </div>
                            <div id="divCxpReportesProveedor"></div>
                            <input type="hidden" name="hdnCxpReportesProveedor" value="" style="width: 350px;" />
                            <input type="text" name="txtCxpReportesProveedor" value="" size="40"  />  
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2"><button type="button" id="btnCxpReportesBuscar">Buscar</button></td>
                </table>                
            </div>
            <div style="width: 780px; float: left; text-align: left;">


                <script type="text/javascript">
                    $("input[name='txtCxpReportesProveedor']").autocomplete({
                        source: "admin_cuentas_x_pagar_reportes_data.php?operation=rp&sltCxpReportesEmpresas=<?php print $intEmpresa; ?>",
                        minLength: 1,
                        select: function( event, ui ) {
                                                                                        
                            $("input[name='hdnCxpReportesProveedor']").val(ui.item.id);
                            $("#divCxpReportesProveedor").html(ui.item.value);
                            $(this).hide();
                            $("#divCxpReportesProveedor").show();
                            $("#divCxpReportesProveedorCambio").show();
                                                                                       
                        }
                    });
                    $("#divCxpReportesProveedorCambio").click(function() {
                        $("#divCxpReportesProveedor").hide();
                        $("input[name='txtCxpReportesProveedor']").show().select();
                        $("input[name='hdnCxpReportesProveedor']").val("");
                    });
                </script>
            </div>           
        </div>
        <script type="text/javascript">
            $("#btnCxpReportesBuscar").button({
                icons: {
                    primary: "ui-icon-search"
                }
            }).click( function () {
                fntCxpReportesFacturas();
            });
        </script>
        <?php
    }
}

function fntCxpReportesFacturas($db) {

    //drawDebug($_POST);
    $intEmpresa = getParam("sltCxpReportesEmpresas");
    $strProveedor = getParam("hdnCxpReportesProveedor");
    $strFacturasEstado = getParam("radCxpReportesFacturasEstado");
    $strWhere = "";
    if (!empty($strProveedor)) {
        $strWhere .= " AND cllg_cp_factura.FK_PROVEEDOR = '{$strProveedor}' ";
    }
    if ($strFacturasEstado == "T") {
        
    } elseif ($strFacturasEstado == "P") {
        $strWhere .= " AND cllg_cp_factura.SALDO_ACTUAL = '0' ";
    } elseif ($strFacturasEstado == "NP") {
        $strWhere .= " AND cllg_cp_factura.SALDO_ACTUAL > '0' ";
    }

    $strQuery = "SELECT cllg_cp_factura.ID, 
                        IF(cllg_cp_factura.SERIE = '', cllg_cp_factura.NUMERO, CONCAT(cllg_cp_factura.SERIE, ' - ', cllg_cp_factura.NUMERO) ) AS NUMERO, 
                        cllg_cp_factura.TIPO_DOCTO,
                        cllg_cp_proveedor.RAZON_SOCIAL AS PROVEEDOR, 
                        cllg_cp_factura.FK_PROVEEDOR, 
                        cllg_cp_factura.TOTAL, 
                        DATE_FORMAT(cllg_cp_factura.FECHA, '%d-%m-%Y') AS FECHA, 
                        DATE_FORMAT(cllg_cp_factura.FECHA_PAGO, '%d-%m-%Y') AS FECHA_PAGO, 
                        cllg_cp_factura.CONTRASENA, 
                        cllg_cp_factura.SALDO_ACTUAL,
                        cllg_cp_pago.ESTADO,
                        DATE_FORMAT(cllg_bnc_cheque.FECHA, '%d-%m-%Y') AS FECHA_PAGADA,
                        cllg_bnc_cheque.NUMERO AS NUMERO_CHEQUE 
                 FROM   cllg_cp_factura,
                        cllg_cp_proveedor,
                        cllg_cp_pago
                        LEFT JOIN cllg_bnc_cheque ON cllg_cp_pago.FK_SOLICITUD =  cllg_bnc_cheque.FK_SOLICITUD 
                 WHERE  cllg_cp_factura.FK_PROVEEDOR = cllg_cp_proveedor.NIT
                 AND    cllg_cp_factura.FK_EMPRESA = '{$intEmpresa}' 
                 AND    cllg_cp_factura.CONTRASENA IS NOT NULL 
                 AND    cllg_cp_factura.ESTADO IN(1,2)
                 AND    cllg_cp_factura.ID = cllg_cp_pago.FK_FACTURA 
                 {$strWhere}
                 ORDER  BY cllg_cp_proveedor.RAZON_SOCIAL, cllg_cp_factura.CONTRASENA";
    //drawDebug($strQuery);
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    ?>        
        &nbsp;
    <div style="width: 900px; float: left; ">
        <div id="tablaheader" class="dttb">
            <table>
                <caption><button type="button" id="printbtn" onclick="window.print();">Imprimir</button></caption>
                <thead>
                    <tr>
                        <th width="100px">Número de contraseña</th>
                        <th width="110px">Número de factura</th>
                        <th width="225px">Proveedor</th>
                        <th width="95px">Fecha</th>
                        <th width="120px">Valor Factura</th>
                        <th width="100px">Estado</th>
                        <th width="110px">Fecha pagada</th>
                        <th width="105px">No. documento de pago</th>
                    </tr>
                </thead>
            </table>
        </div>
        <script type="text/javascript">
            $("#printbtn").button({icons:{primary:"ui-icon-print"}});
        </script>
        <div id="tabladet" class="dttb" style="height: 600px; overflow-y: auto; ">
            <?php
            if ($intNumRows > 0) {
                ?>
                <table>
                    <tbody>
                        <?php
                        while ($rTMP = $db->fetch_array($qTMP)) {
                            $strEstado = ($rTMP["ESTADO"] == 0) ? "Cancelado" : ( ($rTMP["ESTADO"] == 1) ? "Realizado" : "Programado" );
                            ?>
                            <tr>
                                <td width="113px"><?php print $rTMP["CONTRASENA"]; ?></td>
                                <td width="102px"><?php print $rTMP["NUMERO"]; ?></td>
                                <td width="185px"><?php print $rTMP["PROVEEDOR"]; ?></td>
                                <td width="72px"><?php print $rTMP["FECHA"]; ?></td>
                                <td width="100px"><?php print number_format($rTMP["TOTAL"], 2); ?></td>
                                <td width="90px"><?php print $strEstado; ?></td>
                                <td width="100px"><?php print $rTMP["FECHA_PAGADA"]; ?></td>
                                <td width="105px"><?php print( empty($rTMP["NUMERO_CHEQUE"]) ) ? "" : "Cheque No. " . $rTMP["NUMERO_CHEQUE"] ; ?></td>
                            </tr>
                            <?php
                        }
                        ?>
                    </tbody>
                </table>

                <?php
            } else {
                ?>
                <div style="width: 900px; float: left;">
                    <div class="ui-widget" style="width: 800px; height: auto;" align="center">
                        <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 500px;"> 
                            <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                            No se encontraron registros.
                        </div>
                    </div>
                </div>
                <?php
            }
            $db->free_result($qTMP);
            ?>
        </div>
    </div>

    <?php
}

function fntCxpReportesGrabar($db) {

    //drawDebug($_POST);
    $intEmpresa = getParam("sltCxpReportesEmpresas");
    $strSolicitudes = "";
    while ($arrPost = each($_POST)) {

        $arrExplode = explode("_", $arrPost["key"]);
        if ($arrExplode[0] == "radCxpReportesID") {

            $sinValorProgramar = getParam("txtCxpReportesValorProgramar_{$arrExplode[1]}");
            $intProveedor = getParam("radCxpReportesProveedor_{$arrExplode[1]}");
            $strNombre = "";
            $strQuery = "SELECT * 
                 FROM   cllg_cp_proveedor 
                 WHERE  NIT = '{$intProveedor}' 
                 AND    FK_EMPRESA = '{$intEmpresa}'";
            $qTMP = $db->query($strQuery);
            while ($rTMP = $db->fetch_array($qTMP)) {
                $strNombre = $rTMP["RAZON_SOCIAL"];
            }
            $db->free_result($qTMP);

            $db->query("INSERT INTO cllg_bnc_docto_solicitud 
                        (FECHA, MONTO, TIPO, NOMBRE, CONCEPTO, ESTADO) 
                        VALUES 
                        (NOW(), '{$sinValorProgramar}', '1', '{$strNombre}', 'Pago a proveedor', '2')");
            $intSolicitudID = mysql_insert_id($db->link_id);

            $strQuery = "INSERT INTO cllg_cp_pago
                        (FECHA, MONTO, FK_FACTURA, CONCEPTO, FK_SOLICITUD, ESTADO)
                        VALUES
                        (NOW(),'{$sinValorProgramar}','{$arrExplode[1]}','','{$intSolicitudID}','2')";
            $db->query($strQuery);

            $sinSaldo = 0;
            $strQuery = "SELECT SUM(MONTO) AS SALDO FROM cllg_cp_pago WHERE FK_FACTURA = '{$arrExplode[1]}' AND ESTADO IN(1,2)";
            $qTMP = $db->query($strQuery);
            while ($rTMP = $db->fetch_array($qTMP)) {
                $sinSaldo = $rTMP["SALDO"];
            }
            $db->free_result($qTMP);

            $strQuery = "UPDATE cllg_cp_factura SET SALDO_ACTUAL = SALDO_ANTERIOR - {$sinSaldo} WHERE ID = '{$arrExplode[1]}'";
            $db->query($strQuery);

            $strSolicitudes .= (empty($strSolicitudes)) ? "" : ", ";
            $strSolicitudes .= $intSolicitudID;
        }
    }

    if (!empty($strSolicitudes)) {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                Solicitudes de cheques No. <?php print $strSolicitudes; ?>
            </div>
        </div>
        <br>
        <?php
    }

    die();
    $intEmpresa = getParam("sltCxpReportesEmpresas");
    $intFacturaID = getParam("radCxpReportesID");
    $valor = getParam("hdnCxpReportesValor");
    $arrfecha = explode("-", getParam("hdnCxpReportesFecha"));
    $fecha = $arrfecha[2] . "-" . $arrfecha[1] . "-" . $arrfecha[0];
    $concepto = getParam("hdnCxpReportesConcepto");

    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    total_activo > 0 
                 AND    total_pasivo > 0
                 AND    fk_empresa = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCerrado = $db->num_rows;
    $db->free_result($qTMP);

    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    fk_empresa = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCorrecto = $db->num_rows;
    $db->free_result($qTMP);

    if ($intCicloCerrado > 0) {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 800px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                    No se puede ingresar partida en una fecha ya cerrada.</p>
            </div>
        </div>
        <br>
        <?php
    } else if ($intCicloCorrecto == 0) {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 800px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                La fecha de la partida no esta configurada.
            </div>
        </div>
        <br>
        <?php
    } else {

        $strQuery = "SELECT * FROM cllg_contab_ciclo WHERE activo = '1' AND fk_empresa = '{$intEmpresa}'";
        $qTMP = $db->query($strQuery);
        $intNumRows = $db->num_rows;
        $rTMP = $db->fetch_array($qTMP);
        $intCiclo = $rTMP["codigo"];
        $db->free_result($qTMP);
        if ($intNumRows > 0) {

            $strQuery = "INSERT INTO cllg_contab_ajuste 
                         (id, fecha, monto, ciclo, descripcion)
                         VALUES
                         (NULL, '{$fecha}', {$valor}, '{$intCiclo}', '{$concepto}')";
            $db->query($strQuery);
            $intID = mysql_insert_id($db->link_id);

            if ($intID > 0) {

                while ($arrPost = each($_POST)) {

                    $arrExplode = explode("_", $arrPost["key"]);

                    if ($arrExplode[0] == "hdnCuenta" && $arrPost["value"] > 0) {

                        $debe = getParam("txtDebe_" . $arrExplode[1]);
                        $haber = getParam("txtHaber_" . $arrExplode[1]);
                        if ($debe > 0 && $haber == 0) {
                            $monto = $debe;
                            $debe = 1;
                            $haber = 0;
                        } else if ($debe == 0 && $haber > 0) {
                            $monto = $haber;
                            $debe = 0;
                            $haber = 1;
                        }
                        $strQuery = "INSERT INTO cllg_contab_cuenta_ajuste 
                                     (cuenta, debe, haber, monto, ajuste)
                                     VALUES
                                     ('{$arrPost["value"]}', '{$debe}', '{$haber}', '{$monto}', '{$intID}')";
                        $db->query($strQuery);
                    }
                }

                $db->query("UPDATE cllg_cp_factura SET ESTADO = '2', FK_AJUSTE = '{$intID}' WHERE ID = '{$intFacturaID}'");
                ?>
                <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
                    <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                        <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                        Partida ingresada No. <?php print $intID; ?>
                    </div>
                </div>
                <br>
                <script type="text/javascript" language="javascript">
                    fntCxpReportesFacturas();
                    var objInterface = $("#divCxpReportesPartida");
                    objInterface.html("");
                </script>
                <?php
            }
        }
    }
}

function mround($number, $precision = 0) {

    $precision = ($precision == 0 ? 1 : $precision);
    $pow = pow(10, $precision);

    $ceil = ceil($number * $pow) / $pow;
    $floor = floor($number * $pow) / $pow;

    $pow = pow(10, $precision + 1);

    $diffCeil = $pow * ($ceil - $number);
    $diffFloor = $pow * ($number - $floor) + ($number < 0 ? -1 : 1);

    if ($diffCeil >= $diffFloor)
        return $floor;
    else
        return $ceil;
}

function fntCxpReportesProveedorGet($db) {

    $arrResult = array();
    $intEmpresa = getParam("sltCxpReportesEmpresas");
    $term = getParam("term");
    $strQuery = "SELECT * FROM cllg_cp_proveedor
                 WHERE (NIT LIKE '%{$term}%' OR RAZON_SOCIAL LIKE '%{$term}%') 
                 AND    FK_EMPRESA = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);

    if ($rTMP = $db->fetch_array($qTMP)) {

        do {
            $arrTMP = array();
            $arrTMP["id"] = $rTMP["NIT"];
            $arrTMP["value"] = $rTMP["NIT"] . " - " . $rTMP["RAZON_SOCIAL"];

            array_push($arrResult, $arrTMP);
        } while ($rTMP = $db->fetch_array($qTMP));
    }
    $db->free_result($rTMP);

    print json_encode($arrResult);
}
?>